草庐IT

TypeScript 条件语句

全部标签

javascript - TypeScript 不提供函数名称

我有一些typescript代码,我正在做一些元编程,我需要能够访问instance.func.name,但是TypeScript在编译的JS中省略了函数名称。typescript:classClassName{//...func():ReturnType{//...}}编译的JavaScript://...ClassName.prototype.func=function(){//...};所需的JavaScript:ClassName.prototype.func=functionfunc(){//...^^^^};是否有我缺少的编译器选项,或者我可以在TypeScript中使用的

javascript - TypeScript:异步生成器

我想要一个这样的函数:exportasyncfunction*iterateDir(dir:string){letlist=awaitfs.readdir(dir);//fs-promiseimplementationofreaddirfor(letfileoflist){yieldfile;}}我会这样使用:for(letfileiniterateDir(dir)){processFile(file);}这行不通,因为一个函数不能既是异步函数又是生成器。我将如何构建代码来实现相同的目的?如果我将awaitfs.readdir更改为回调,我假设外部for..of循环不会等待。如果我去掉

javascript - 为什么 JavaScript 的 `Promise.all` 没有在失败条件下运行所有​​ promise ?

根据MDN:Ifanyofthepassedinpromisesrejects,theallPromiseimmediatelyrejectswiththevalueofthepromisethatrejected,discardingalltheotherpromiseswhetherornottheyhaveresolved.ES6spec似乎证实了这一点。我的问题是:为什么Promise.all会在其中任何一个拒绝时丢弃promises,因为我希望它等待“所有”promises结算,并且“丢弃”到底是什么意思?(很难说出“丢弃”对于进行中的promises和可能尚未运行的prom

javascript - 检测点击是否在 react 组件内部或不在 typescript 中

我大致有以下几点:componentDidMount(){document.querySelector('body')!.addEventListener('click',this.click);}click=(e:Event)=>{if(this.state.toggled){if(!ReactDom.findDOMNode(this.someRef).contains(e.target)){this.setState({toggled:false});}}};render(){return({this.someRef=e;}}/>)}此代码正确检测用户是在CustomElement

javascript - Visual Studio 2017 不编译 typescript

我最近更新到VS2017,我使用的解决方案曾经在VS2015中完美运行。我在工具>文本编辑器>TS/JS>项目中启用了“保存时编译”功能,我正在确保我使用了正确的“代码生成”选项,但VS不会编译任何typescript文件。js输出文件已经存在,它是由VS2015生成的,当我保存ts文件时,底部栏显示“Output(s)generatedsuccessfully”消息,但js文件没有变化。请注意,该项目受源代码控制,但ts和js文件都已checkout以供编辑。我在网上看到类似的问题已通过最新的VS更新得到解决,我确信我的VS版本是最新的。有谁知道这是怎么回事吗?

javascript - 类似 JSON 的语法与 switch 语句 javascript

我在http://www.jquery4u.com/javascript/shorthand-javascript-techniques/上看到了一个帖子他在其中谈到了使用switch语句的替代方法。我在下面创建了一个片段,但我不确定为什么替代方法慢了99%。functiondoX(){}functiondoY(){}functiondoN(){}varsomething=1;varcases={1:doX,2:doY,3:doN};if(cases[something]){cases[something]();}http://jsperf.com/alternateswitch有什么

javascript - 为什么从 angularjs.TypeScript.DefinitelyTyped 中删除全局 'angular' 变量?

从angularjs.TypeScript.DefinitelyTyped升级2.1.6到3.1.2删除了我用于模块声明文件的静态angular变量的可访问性。下面出现一个错误,表示符号angular无法正确解析。angular.module("someModule")....Resharper提供了从外部模块导入变量的选项,但这不起作用。在早期版本中公开全局angular变量是否是一个错误?它是否不打算按照我的项目使用它的方式使用? 最佳答案 这是Resharper9.0的一个错误。该修复计划用于9.1版本。您现在可以执行以下两项

javascript - 如何重构这一堆 if 语句?

假设我有一个名为incomingValue的变量,并且我从API获取一个数字作为它的值。这些值介于0到1之间,我正在根据此值使用一堆if语句设置另外两个变量,如下所示。varincomingValue;//SetbyanAPIvarsetValueName;varsetValueIcon;if(incomingValue0.09&&incomingValue在实际实现中,我有大约10个if语句检查特定时间间隔,直到1。例如如果它大于0.10但小于0.16等,则执行此操作。作为一个JavaScript初学者,我觉得这不是正确的做事方式,尽管它可以完成工作。我将如何重构这段代码?更新:根据

javascript - 具有两个条件的 KnockoutJS 数据绑定(bind) ="Visible :"不起作用

我正在尝试使用KnockoutJS进行锻炼。我有两个下拉菜单和一个文本框。我需要什么如果两个下拉菜单都被选中,那么只有我应该显示复选框。否则,文本输入应该不可见。我尝试了什么:这是我的fiddle:https://jsfiddle.net/vikash208/z4x5meua/13/我用的是这样的:data-bind="visible:selectedValue&&selectedControl"综上所述,验证条件如下:IFselectedValueISTRUEANDselectedControlISNOTUNDEFINED请给我一个解决方案,以及我哪里出错了。我是knockoutJS

javascript - 将 typescript 与 RollUp bundle 在一起 - 无法处理编译器选项

我正在尝试bundle我的typescript文件RollUp(https://rollupjs.org/)我使用了这个配置文件:rollup.config.js:importaliasfrom'rollup-plugin-alias';importresolvefrom'rollup-plugin-node-resolve';importtypescriptfrom'rollup-plugin-typescript';importangularfrom'rollup-plugin-angular';exportdefault{entry:'../main.ts',format:'ii